File manager - Edit - /home/autoph/public_html/projects/aha-api/app/Jobs/SyncChatbotLogsJob.php
Back
<?php namespace App\Jobs; use App\Models\ChatbotLog; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Http; use Carbon\Carbon; use Illuminate\Support\Facades\Log; use GuzzleHttp\Client; use Google\Auth\CredentialsLoader; use Google\Auth\ApplicationDefaultCredentials; use DB; class SyncChatbotLogsJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, SerializesModels; public $queue = 'chatbot_logs'; public $tries =3; //return 3 times public $timeout = 180; //Time out after 3 minutes /** * Create a new job instance. */ public function __construct() { // } /** * Execute the job. */ public function handle(): void { Log::channel('chatbot_log_raw')->info('[SyncChatbotLogsJob] Execution started at: ' . now()); $accessToken = $this->getAccessToken(); if (!$accessToken) { Log::error('❌ Failed to retrieve access token.'); return; } // Log::info('✅ Access token retrieved successfully.'); $projectId = 'autohub-assist'; $url = "https://logging.googleapis.com/v2/entries:list"; $dateNow = now()->subDay()->startOfDay()->toIso8601String(); $endOfDay = now()->subDay()->endOfDay()->toIso8601String(); $payload = [ 'resourceNames' => ["projects/{$projectId}"], 'filter' => 'resource.labels.project_id="'.$projectId.'"', 'orderBy' => 'timestamp desc', 'pageSize' => 10000 ]; // Confirm API payload Log::info('Sending request payload:', $payload); $nextPageToken = null; do { if ($nextPageToken) { $payload['pageToken'] = $nextPageToken; } $response = Http::withHeaders([ 'Authorization' => 'Bearer ' . $accessToken, 'Content-Type' => 'application/json' ])->post($url, $payload); $status = $response->status(); $responseData = $response->json(); Log::channel('chatbot_log_raw')->info('API Status: ' . $status); Log::channel('chatbot_log_raw')->info('Response Data Entries:', $responseData); if ($status !== 200 || empty($responseData['entries'])) { Log::channel('chatbot_log_raw')->info('No new logs found or error retrieving logs.'); break; } $logs = $responseData['entries']; foreach ($logs as $log) { $jsonPayload = $log['jsonPayload'] ?? []; $queryResult = $jsonPayload['queryResult'] ?? []; $parameters = $queryResult['parameters'] ?? []; $botResponses = $queryResult['responseMessages'] ?? []; $dataStoreSteps = $queryResult['dataStoreSubExecutionSteps'] ?? []; $botMessages = []; foreach($botMessages as $response){ if(isset($response['text']['text'])){ $botMessages[] = implode(" ", $response['text']['text']); } } // if($jsonPayload['responseId']){ $sessionID = isset($jsonPayload['responseId']) ? $jsonPayload['responseId'] : null; $responseID = isset($jsonPayload['responseId']) ? $jsonPayload['responseId'] : null; $timeStamp = Carbon::parse($log['timestamp'])->toDateTimeString(); $data = [ 'session_id' => $sessionID, 'response_id' => $responseID, 'language_code' => $queryResult['languageCode'] ?? null, 'event' => $queryResult['match']['event'] ?? null, 'match_type' => $queryResult['match']['matchType'] ?? null, 'confidence' => $queryResult['match']['confidence'] ?? null, 'page_display_name' => $queryResult['currentPage']['displayName'] ?? null, 'flow_display_name' => $queryResult['currentFlow']['displayName'] ?? null, 'parameters' => json_encode($parameters), 'bot_responses' => json_encode($botMessages),//json_encode(array_map(fn($res) => $res['text']['text'] ?? [], $botResponses)), 'data_store_steps' => json_encode($dataStoreSteps), 'start_time' => $timeStamp, 'complete_time' => Carbon::parse($log['receiveTimestamp'])->toDateTimeString(), ]; DB::transaction(function () use ($data,$sessionID,$timeStamp) { ChatbotLog::updateOrCreate(['session_id' => $sessionID,'start_time' => $timeStamp],$data); }); // } } $nextPageToken = $responseData['nextPageToken'] ?? null; } while ($nextPageToken); DB::disconnect(); Log::channel('chatbot_log_raw')->info('✅ [SyncChatbotLogsJob] raw Execution finished at: ' . now()); } private function getAccessToken(){ // $credentialsPath = env('GOOGLE_APPLICATION_CREDENTIALS'); $credentialsPath = base_path('storage/autohub-assist-ff9a5fe0ee23.json'); putenv("GOOGLE_APPLICATION_CREDENTIALS={$credentialsPath}"); $client = new Client(); $scope = 'https://www.googleapis.com/auth/cloud-platform'; $creds = ApplicationDefaultCredentials::getCredentials($scope); $token = $creds->fetchAuthToken(); return $token['access_token'] ?? null; } }
| ver. 1.4 |
.
| PHP 8.1.32 | Generation time: 0.04 |
proxy
|
phpinfo
|
Settings